It is known to represent human or animal bodies by digital models comprising a “skeleton” covered by a “skin”. The skeleton is constituted by a set of segments, called “bones” even if they do not necessarily correspond to actual anatomical bones, articulated by rotational joints having one, two or three rotational degrees of freedom. Such models, also known as “avatars”, are usually provided in standard postures, such as the so-called “T-pose” (partially spread legs, arms extended horizontally) for human body models.
In order to make the avatar take a particular posture different from the original one, it is necessary to determine a set of rotations of the joints articulating the bones of its skeleton leading to the desired result. This is not an easy task.
In many cases, instead of fully specifying the desired posture, one only imposes a constraint on one or more particular points (called “effectors”) of the skeleton. For instance, one may impose that a hand of the avatar (e.g. corresponding to the endpoint of a bone representing its forearm) takes a particular position. From a theoretical standpoint, this corresponds to the problem of inverse kinematics (IK).
While direct kinematics allows computing the position X of one or more effectors of a kinematic chain (such as a skeleton or a portion thereof) as a function of a set of parameters θ defining the rotation angles of the joints of the chain:X=f(θ)
inverse kinematics aims at computing the parameters θ leading to a specified target position X of the effector:θ=f1(X).
While a direct kinematics problem usually allows a single solution, an inverse kinematics problem may have zero or infinite solution. In the first case, the target position X is impossible to reach; in the second one (under-constrained system), it corresponds to an infinite number of different postures (redundancy) defining a “solution space”, one of which has to be sort out arbitrarily or based on some criteria.
The inverse kinematics problem only allows an analytical solution for very short kinematic chains, which are usually of little practical interest.
In more complex cases, one may locally linearize the direct kinematic function f, and invert it. In fact, if the system is under-constrained, only a pseudo-inverse of the (linearized) direct kinematic function may be found, and redundancy is dealt with by choosing the solution which minimizes a suitably chosen cost function. This method is very powerful and flexible—indeed, much more than required by many computer graphic applications—but it involves complex calculations which are incompatible with real-time implementations.
Other approaches exist to solve the inverse kinematic problem in a faster and more practical way.
A well known approach consists in reducing the inverse kinematic problem to a minimization problem—the function to be minimized being the distance between the effector and the target position—and solving the latter using the Cyclic Coordinate Descent (CCD) algorithm (see David G. Luenberger and Yinyu Ye “Linear and Nonlinear Programming” third edition, Springer (2008)). Cyclic Coordinate Descent Inverse Kinematics (CCD-IK) is actually an iterative algorithm that performs local adjustments to the joints to minimize errors of position and orientation of the effectors. Each iteration goes through the kinematic chain from the extremity to the root and modifies each joint individually. This adaptation is then simple enough to be performed analytically.
The main advantage of this method is the absence of singularities during its convergence. However, it also has a few major disadvantages. First of all, it does not provide the space of possible solutions taking account of redundancy, but only a single solution, which may not correspond to a realistic posture of a human or animal body. Finally, the adaptation is not evenly distributed between the joints. Indeed, the first joint to be modified undergo the largest rotation—which are often much too large to lead to a realistic posture. This approach is well suited to robotics, where only the final position of the effector counts, rather than the posture itself.
The Inductive Inverse Kinematic Algorithm (J. O. Kim et al. “The Inductive Inverse Kinematics Algorithm to Manipulate the Posture of an Articulated Body”, ICCS 2003) is a modified form of CCD leading to more realistic postures. To do so, it initializes the kinematic chain in a precomputed posture stored in a so-called “Unified Postures Map” before launching the CCD algorithm. The drawback of this approach is that it requires storing a great number of precomputed postures for a single kinematic chain. Applying it to the modeling of human or animal body would require computing Unified Posture Maps for several different skeletons (e.g. corresponding to different individuals), each comprising a plurality of kinematic chains, further increasing the burden which quickly becomes unbearable.
The Triangulation Inverse Kinematics algorithm (R. Müller-Cajar and R. Mukundan “Triangulation: A new algorithm for Inverse Kinematics, Proceedings of Image and Vision Computing New Zealand 2007) has been introduced following the acknowledgement that CCD-based methods give unrealistic postures mainly because the first parameters to be adapted undergo the biggest changes. “Triangulation” reduces this drawback by determining the rotation of each joint towards the target by a law of cosines. The algorithm is easy and fast to implement, but it does not lead to sufficiently realistic postures.